millenniumwaraigisfandomcom-20200223-history
User blog:Lzlis/Skill data
Skill data is mostly stored in four files: SkillList.atb, SkillText.atb, SkillTypeList.atb, and SkillInfluenceConfig.atb. Data about which unit has which skill is in the unit document (and fairly self-explanatory -- column each for pre-cc, post-cc and skill awakened). Basic Data Most of the basic data regarding skills is in SkillList.atb. Each skill has a WaitTime which is the skill's cooldown (in seconds). The initial use timer is calculated from this cooldown time depending on unit rarity (and whether the skill is awakened for Black units). It also implicitly goes down by 1 each time the skill is leveled up. (The value listed in the table is one higher than what we list on the wiki.) Next, there are ContTime and ContTimeMax. These determine the skill duration, with the true duration being linearly interpolated between these two values based on the skill level (from 1 to max). Rounding behavior is unknown. Then come Power and PowerMax. These values are similarly interpolated to provide "skill power". Rounding is to the nearest integer with half-integers rounding up. The effect of the skill power depends on the SkillType (which can also provide effects independent of skill power). Some skills aren't affected by skill power at all. SkillType is the most important parameter. This is an index into SkillTypeList.atb. SkillTypeList.atb simply remaps the SkillType to an "influence type" index into SkillInfluenceConfig.atb where the real guts of the data are. Setting that aside for a moment, the last parts of SkillList.atb are LevelMax, Evolve, and ID_Text. LevelMax, is of course, the maximum skill level. Evolve indicates the "next level" of the skill (ie Increase Attack I goes to Increase Attack II), but I believe this is probably unused since skills are specified in the unit table. (Possibly it was used in an earlier version of the game.) Then ID_Text is an index into SkillText.atb which gives the skill description. For the skill level, it is important to note that the skill level does not change when a skill is awakened. Although awakened skills are not explicitly parametrized by skill level, they still benefit from the reduced WaitTime. Based on observed occurences, the awakened skill should have the same LevelMax as the original skill. Skill Text Skill text, of course, doesn't actually influence what the skill does, but it may be interesting to note how the descriptions change when the skill is leveled up. Parts of the skill text that are enclosed in angle brackets are placeholders that are replaced depending on the skill effect at the current level. (Note that this is not always related to skill power -- it can involve understanding of the data in the influence table.) This means, in some sense, the numbers (when calculated in this way) in the descriptions shouldn't lie (although they may round). Skill Influences Most skill types (although not the most common ones) have more than one effect. Skill types with more than one effect take up more than one row in the table. The Data_ID column controls this -- when it is non-zero it indicates the beginning of a new skill type, and then successive zero rows are associated with the same skill type. The most interesting column is Data_InfluenceType. This indicates a certain type of effect for the skill, and most of the other columns modify it. (Note that this information mostly comes from cross-referencing which skills use which influences.) There are three multiply values (Data_MulValue, Data_MulValue2, and Data_MulValue3). The first determines what percent of the original stat should be used. This is generally 0 or 100, but it is sometimes used at other values for things like percentage HP reduction. The second multiply value determines how much of the skill power is applied. This is a little strange, because it scales the effect of the skill power rather than being applied directly as a percentage to the skill power. A good example is Excellent Arrow. Skill power is set up as 120 to 140 which is applied at 100% to the attack and at 50% to the range (effectively giving 110 to 120). It's possible I'm a little off here, since this isn't used that often. The third multiply value is weird. My best interpretation at the moment is that it overrides the early two values as a percentage of the base value when it is non-zero. It's not clear though. It's possible that this is the only multiplier that can be used in combination with the add value. Data_AddValue is generally used with all the multiply values as zero. This allows setting a specific value that doesn't depend on the base value or skill power (e.g. setting a particular missile). It is occasionally used in combination with Data_MulValue3 to provide a flat buff, though (like a flat MR bonus). Data_Target determines which units are affected by the influence. The common values are 2 for self, 3 for allies in range, and 4 for all allies. Some values only seems to be used with Data_InfluenceType 1 which is discussed briefly in the influence table above. Type_Collision, Type_CollisionState, and Type_ChangeFunction are used when the behavior of the unit changes (like switching from melee to ranged). In particular, the Type_ChangeFunction column seems to correspond to the Type_BattleStyle column in ClassBattleStyleConfig.atb. _Expression is rarely used, and appears to be an expression (in unknown programming language with unknown semantics, but usually fairly self-explanatory) controlling which allies are affected by the row (used when Data_Target is setup to affect allies). _ExpressionActivate is similar, but it is a condition on the unit using the skill itself that determines whether the row is active. This is used, for example, for Release the Sealed Ones to determine if the unit is class-changed, since this affects what the skill does. (Earlier versions of this skill seemed to do this differently since I don't think _ExpressionActivate existed yet, but I believe the old method is deprecated.) Category:Blog posts